/**
 * @file	AudioDevice.h
 * @author  Thomas Fu <thomas.ks.fu@gmail.com>
 * @version 0.0.1
 * @date	04/28/2011	
 *
 * @section License
 * This program is propety of The SOSS and may not be used by any 
 * individual for any purpose at any time without express permission from 
 * Mike Casey, Thomas Fu, Chris Hairfield, Kyle Lamson, Ben Treweek, or Cliff 
 * Warren.
 *
 * @brief 
 * This file contains information used for determining which system audio
 * devices to use for input and output
 */

#ifndef _audiodevice_h
#define _audiodevice_h

#include <string>
#include <vector>

/**
 * Struct that contains information about a particular audio device. Eventually
 * may need to be its own class.
 */
typedef struct {
	
	/** The identification number assigned to the particular device (stored as 
	 *	a char for space efficiency
	 */
	char deviceNumber;
	
	/** The number of output channels supported by the particular device 
	 *	(stored as a char for space efficiency)
	 */
	char inputChannels;

	/** The number of output channels supported by the particular device 
	 *	(stored as a char for space efficiency)
	 */
	char outputChannels;
	
	/** The name assigned to the particular device */
	std::string deviceName;
	
	/**	Boolean value indicating whether or not 16-bit data is supported */
	bool _16BitEnabled;

	/** Vector storing the sample rates supported by the given device */
	std::vector<unsigned int> sampleRates;

} audioDevice;

#endif